平成17年 春期 基本情報技術者 午後 問11
問11 COBOL次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。
〔プログラムの説明〕 ローン条件情報を受け取り,“返済回数指定の月払元金均等方式”で, ローン返済計画書を出力するサブプログラムである。 返済回数指定の月払元金均等方式とは,元金部分は返済回数による均等額, 利息部分は元金残高に利率を乗じて算出し,それらの合計を毎月の返済額とする返済方式である。 (1) ローン条件情報(COND-R)のレコード様式は,次のとおりである。
@ ローン借入日及び初回返済日は,4けたの西暦年,2けたの月, 2けたの日で構成される8けたの日付とする(例:2005 年 7 月 1 日の場合は,20050701)。 A 毎月返済日は,1 〜 31 の値とする。 返済日に対応する日が存在しない月は,月末の日を返済日とする。 B 年利は,%を単位とし,整数部2けた小数部3けたで構成される5けたの数値とする (例:年利 5.0 %の場合は 05000 )。 返済回数は 1 〜 420 とする。 C ローン条件情報で与えられたデータには,誤りがないものとする。 (2) ローン返済計画書の出力例を次に示す。
ローン返済計画書の見出し部分(出力例の1,2行目)は,あらかじめ印字されているものとする。 (3) 毎月返済額の元金部分及び利息部分の計算は,次のように行う。 @ 毎月の元金返済に充てる金額は,“ローン元金÷返済回数”で求める。 この元金返済部分を,毎月の返済ごとにローン元金から減算し,ローン元金残高を更新する。 A “ローン元金÷返済回数”が割り切れない場合, 毎月の元金返済額は小数点以下を切上げとし,最終回の元金返済額は次の端数の金額となる。 端数=ローン元金−毎月元金返済額×(返済回数−1 ) B 毎月の利息は,“ローン元金残高×(年利÷100)×日数÷365”で求め, 割り切れない場合は切り捨てる。 ここで日数は,最初の返済の場合はローン借入日から初回返済日までの日数, 2回目以降は前回返済日の翌日から当月返済日までの日数とする。 (4) 関数 INTEGER-OF-DATE は,8けたの日付をグレゴリオ暦で 1601 年 1 月 1 日を 1 とする通算日に変換した整数値を返す。 (5) 日付が正しいかどうかを調べるために,副プログラム DATECHK を使用する。
CALL "DATECHK" USING 日付 結果 〔プログラム〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD PRINT-F EXTERNAL. 4 01 PRINT-R PIC X(128). 5 WORKING-STORAGE SECTION. 6 01 W-KAISU PIC 9(04). 7 01 W-AMARI PIC 9(05). 8 01 W-GANKIN-KINTOU PIC 9(15). 9 01 W-GANKIN-HASUU PIC 9(15). 10 01 W-REC. 11 05 W-NISSU PIC 9(04). 12 05 W-GANKIN PIC 9(15). 13 05 W-RISOKU PIC 9(15). 14 05 W-HENSAI-GAKU PIC 9(15). 15 05 W-ZANDAKA PIC 9(15). 16 01 MEI-R. 17 05 M-KAISU PIC ZZZ9. 18 05 FILLER PIC X(03). 19 05 M-HENSAI-YMD PIC 9999/99/99. 20 05 FILLER PIC X. 21 05 M-NISSU PIC ZZZZ9. 22 05 FILLER PIC X. 23 05 M-GANKIN PIC ZZZ,ZZZ,ZZ9. 24 05 FILLER PIC X. 25 05 M-RISOKU PIC ZZZ,ZZZ,ZZ9. 26 05 FILLER PIC X. 27 05 M-HENSAI-GAKU PIC ZZZ,ZZZ,ZZ9. 28 05 FILLER PIC X. 29 05 M-ZANDAKA PIC ZZZ,ZZZ,ZZ9. 30 01 GOUKEI. 31 05 G-NISSU PIC 9(05). 32 05 G-GANKIN PIC 9(15). 33 05 G-RISOKU PIC 9(15). 34 05 G-HENSAI-GAKU PIC 9(15). 35 01 W-HENSAI-YMD PIC 9(08). 36 01 W-HENSAI-YMD-R REDEFINES W-HENSAI-YMD. 37 05 W-HENSAI-YY PIC 9(04). 38 05 W-HENSAI-MM PIC 9(02). 39 05 W-HENSAI-DD PIC 9(02). 40 01 JDATE1 PIC 9(15). 41 01 JDATE2 PIC 9(15). 42 01 W-RETCD PIC 9. 43 LINKAGE SECTION. 44 01 COND-R. 45 03 CD-KARIIRE-YMD PIC 9(08). 46 03 CD-NENRI PIC 9(02)V9(03). 47 03 CD-MAITSUKI-DD PIC 9(02). 48 03 CD-SHOKAI-YMD PIC 9(08). 49 03 CD-GANKIN PIC 9(11). 50 03 CD-KAISU PIC 9(03). 51 PROCEDURE DIVISION USING COND-R. 52 MAIN-RTN. 53 PERFORM INIT-RTN. 54 PERFORM LOAN-RTN . 55 PERFORM GOUKEI-PRINT. 56 EXIT PROGRAM. 57 INIT-RTN. 58 INITIALIZE GOUKEI. 59 DIVIDE CD-GANKIN BY CD-KAISU GIVING W-GANKIN-KINTOU 60 REMAINDER W-AMARI. 61 IF W-AMARI > 0 THEN 62 ADD 1 TO W-GANKIN-KINTOU 63 END-IF. 64 COMPUTE W-GANKIN-HASUU = CD-GANKIN - 65 W-GANKIN-KINTOU * (CD-KAISU - 1). 66 LOAN-RTN. 67 IF W-KAISU = 1 THEN 68 * 最初の返済時 69 MOVE CD-GANKIN TO W-ZANDAKA 70 MOVE CD-SHOKAI-YMD TO W-HENSAI-YMD 71 COMPUTE JDATE1 = 72 FUNCTION INTEGER-OF-DATE(CD-KARIIRE-YMD) 73 COMPUTE JDATE2 = 74 FUNCTION INTEGER-OF-DATE(CD-SHOKAI-YMD) 75 COMPUTE W-NISSU = 76 ELSE 77 * 2 回目以降の返済時 78 COMPUTE JDATE1 = 79 FUNCTION INTEGER-OF-DATE(W-HENSAI-YMD) 80 PERFORM NEXT-HENSAIBI-RTN 81 COMPUTE JDATE2 = 82 FUNCTION INTEGER-OF-DATE(W-HENSAI-YMD) 83 COMPUTE W-NISSU = 84 END-IF. 85 COMPUTE W-RISOKU = . 86 IF W-KAISU = CD-KAISU 87 MOVE W-GANKIN-HASUU TO W-GANKIN 88 ELSE 89 MOVE W-GANKIN-KINTOU TO W-GANKIN 90 END-IF. 91 COMPUTE W-HENSAI-GAKU = W-RISOKU + W-GANKIN. 92 SUBTRACT W-GANKIN FROM W-ZANDAKA. 93 MOVE SPACE TO MEI-R. 94 MOVE W-KAISU TO M-KAISU. 95 MOVE W-HENSAI-YMD TO M-HENSAI-YMD. 96 MOVE W-NISSU TO M-NISSU. 97 MOVE W-GANKIN TO M-GANKIN. 98 MOVE W-RISOKU TO M-RISOKU. 99 MOVE W-HENSAI-GAKU TO M-HENSAI-GAKU. 100 MOVE W-ZANDAKA TO M-ZANDAKA. 101 WRITE PRINT-R FROM MEI-R. 102 ADD W-NISSU TO G-NISSU. 103 ADD W-GANKIN TO G-GANKIN. 104 ADD W-RISOKU TO G-RISOKU. 105 ADD W-HENSAI-GAKU TO G-HENSAI-GAKU. 106 NEXT-HENSAIBI-RTN. 107 * 翌月の返済日を求める 108 MOVE CD-MAITSUKI-DD TO W-HENSAI-DD. 109 ADD 1 TO W-HENSAI-MM. 110 IF W-HENSAI-MM > 12 THEN 111 ADD 1 TO W-HENSAI-YY 112 MOVE 1 TO W-HENSAI-MM 113 END-IF. 114 * 月末の存在しない日付の調整 115 MOVE 1 TO W-RETCD. 116 PERFORM UNTIL W-RETCD = 0 117 CALL "DATECHK" USING W-HENSAI-YMD W-RETCD 118 IF W-RETCD NOT = 0 THEN 119 120 END-IF 121 END-PERFORM. 122 GOUKEI-PRINT. 123 MOVE SPACE TO MEI-R. 124 MOVE G-NISSU TO M-NISSU. 125 MOVE G-GANKIN TO M-GANKIN. 126 MOVE G-RISOKU TO M-RISOKU. 127 MOVE G-HENSAI-GAKU TO M-HENSAI-GAKU. 128 WRITE PRINT-R FROM MEI-R. 設問1 プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群 ア CD-KAISU TIMES イ VARYING W-KAISU FROM 1 BY 1 UNTIL W-KAISU < CD-KAISU ウ VARYING W-KAISU FROM 1 BY 1 UNTIL W-KAISU = CD-KAISU エ VARYING W-KAISU FROM 1 BY 1 UNTIL W-KAISU > CD-KAISU b,c に関する解答群 ア JDATE2 + JDATE1 イ JDATE2 - CD-SHOKAI-YMD ウ JDATE2 - JDATE1 エ JDATE2 - JDATE1 + 1 オ JDATE2 - W-HENSAI-YMD
d に関する解答群 ア CD-GANKIN * JDATE2 * CD-NENRI / 100 / 365 イ CD-GANKIN * W-NISSU * CD-NENRI / 100 / 365 ウ W-ZANDAKA * JDATE2 * CD-NENRI / 100 / 365 エ W-ZANDAKA * W-NISSU * CD-NENRI / 100 / 365
e に関する解答群 ア ADD 1 TO W-HENSAI-DD イ ADD 1 TO W-HENSAI-YY ウ SUBTRACT 1 FROM W-HENSAI-DD エ SUBTRACT 1 FROM W-HENSAI-MM
設問2 このプログラムでは,ローン元金が返済回数で割り切れない場合の 端数調整を最終回の返済で行っている。 パラメタ指定によって初回の返済でも調整できるようにプログラムを変更したい。 行番号 50 と 51 の間に次の行を挿入し,ローン条件情報に端数調整方法を追加する。 この値が 1 のときは初回調整,0 のときは最終回調整とする。 03 CD-HASUU PIC 9. あわせて,プログラム中の行番号 86 を変更すべき内容として正しい答えを,解答群の中から選べ。 初回調整の場合のローン返済計画書の出力例を,次に示す。
解答群 ア IF CD-HASUU = 0 AND W-KAISU = CD-KAISU THEN イ IF CD-HASUU = 1 AND W-KAISU = 1 THEN ウ IF CD-HASUU = 0 AND W-KAISU = CD-KAISU AND
エ IF CD-HASUU = 0 AND W-KAISU = CD-KAISU OR
オ IF W-AMARI NOT = 0 OR
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||